/**
*  
* @Function 数据质量报告Dao
* @ProjectName credit-data-platform 
* @PackageName com.py.credit.dao    
* @FileName DataQualityDao.java    
* @Date 2018年7月11日上午10:21:19
* @Author Min DongXv
* @Copyright (c) 2018, 金电联行 All Rights Reserved.   
*   
*/
package com.py.credit.dao;

import java.util.List;
import java.util.Map;

import org.apache.ibatis.annotations.Param;

import com.py.credit.entity.DataQualityCollectionEntity;
import com.py.credit.entity.DataQualityDetailEntity;
import com.py.credit.entity.DataQualityEntity;
import com.py.framework.core.common.Page;

/**
 * 
 * @Function 数据质量报告Dao
 * @ClassName DataQualityDao
 * @Date 2018年7月11日 上午10:21:19
 * @Author Min DongXv
 * 
 */
public interface DataQualityDao {

	/**
	 * 
	 * @Function 分页查询数据质量报告
	 * @FileName DataQualityDao.java
	 * @MethodName dataQualityListByConditionForPage
	 * @param columns
	 * @param additionalColumns
	 * @param page
	 * @param condition
	 * @return
	 * @Date 2018年7月11日 下午2:31:39
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> dataQualityListByConditionForPage(@Param(value = "columns") List<String> columns,
			@Param(value = "additionalColumns") String[] additionalColumns, @Param(value = "page") Page page,
			@Param(value = "conditions") List<String> condition);

	/**
	 * 
	 * @Function 获取数据质量报告详情
	 * @FileName DataQualityDao.java
	 * @MethodName dataQualityDetail
	 * @param id
	 *            数据质量报告详情ID
	 * @return
	 * @Date 2018年7月11日 下午2:32:28
	 * @Author Min DongXv
	 *
	 */
	public DataQualityDetailEntity dataQualityDetail(@Param(value = "dateRange") String dateRange);

	/**
	 * 
	 * @Function 新增数据质量报告记录
	 * @FileName DataQualityDao.java
	 * @MethodName addDataQuality
	 * @param entity
	 * @return
	 * @Date 2018年7月11日 下午2:34:53
	 * @Author Min DongXv
	 *
	 */
	public int addDataQuality(DataQualityEntity entity);

	/**
	 * 
	 * @Function 新增数据质量报告详情信息
	 * @FileName DataQualityDao.java
	 * @MethodName addDataQualityDetail
	 * @param entity
	 * @Date 2018年7月11日 下午2:36:10
	 * @Author Min DongXv
	 *
	 */
	public void addDataQualityDetail(DataQualityDetailEntity entity);

	/**
	 *
	 * @Function 逻辑删除数据质量报告
	 * @FileName DataQualityDao.java
	 * @MethodName updateDataQuality
	 * @param dateRange
	 * @Date 2018年7月11日 下午2:37:08
	 * @Author Min DongXv
	 *
	 */
	public void updateDataQuality(@Param(value = "dateRange") String dateRange);

	/**
	 *
	 * @Function 逻辑删除数据质量报告详情信息
	 * @FileName DataQualityDao.java
	 * @MethodName updateDataQualityDetail
	 * @param dateRange
	 * @Date 2018年7月11日 下午2:37:54
	 * @Author Min DongXv
	 *
	 */
	public void updateDataQualityDetail(@Param(value = "dateRange") String dateRange);

	/**
	 *
	 * @Function 通过期数获取数据质量报告信息
	 * @FileName DataQualityDao.java
	 * @MethodName getDataQualityByDataRange
	 * @param dateRange
	 * @return
	 * @Date 2018年7月11日 下午2:38:44
	 * @Author Min DongXv
	 *
	 */
	public DataQualityEntity getDataQualityByDataRange(@Param(value = "dateRange") String dateRange);

	/**
	 *
	 * @Function 获取总体数据
	 * @FileName DataQualityDao.java
	 * @MethodName getTotalData
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public Map<String, Object> getTotalData(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "targets") List<String> targets);

	/**
	 *
	 * @Function 获取采集总数
	 * @FileName DataQualityDao.java
	 * @MethodName getTotalCount
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public Integer getTotalCount(@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "target") Integer target);

	/**
	 *
	 * @Function 获取采集总成功数
	 * @FileName DataQualityDao.java
	 * @MethodName getSCount
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public Integer getSCount(@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime,
			@Param(value = "target") Integer target);

	/**
	 *
	 * @Function 获取部门采集top5
	 * @FileName DataQualityDao.java
	 * @MethodName getDeptSumTop
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> getDeptSumTop(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime);

	/**
	 *
	 * @Function 获取资源表top5
	 * @FileName DataQualityDao.java
	 * @MethodName getTargetSumTop
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> getTargetSumTop(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime);

	/**
	 *
	 * @Function 数据归集质量分析
	 * @FileName DataQualityDao.java
	 * @MethodName getDataCollectionList
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<DataQualityCollectionEntity> getDataCollectionList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "target") Integer target);

	/**
	 *
	 * @Function 行政数据列表
	 * @FileName DataQualityDao.java
	 * @MethodName getAdministrationList
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<DataQualityCollectionEntity> getAdministrationList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "targets") List<String> targets);

	/**
	 *
	 * @Function 部门入库率
	 * @FileName DataQualityDao.java
	 * @MethodName deptRateList
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> deptRateList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "order") String order);

	/**
	 *
	 * @Function 获取表ID
	 * @FileName DataQualityDao.java
	 * @MethodName getTableId
	 * @param resourceId
	 *            资源表名
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public Integer getTableId(@Param(value = "resourceId") String resourceId);


	/**
	 *
	 * @Function 获取双公示及时数据
	 * @FileName DataQualityDao.java
	 * @MethodName getPermitPunishData
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> getPermitPunishData(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime);

	





	public Integer getJbSCount(@Param(value = "startTime") String startTime, @Param(value = "endTime") String endTime);
	
	/**
	 *
	 * @Function 获取部门采集top5
	 * @FileName DataQualityDao.java
	 * @MethodName getDeptSumTop
	 * @param startTime
	 *            开始时间
	 * @param endTime
	 *            结束时间
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Map<String, Object>> getDeptSumTop(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime,
			@Param(value = "areaId") String areaId,
			@Param(value = "deptId") String deptId);


	
	public List<Map<String, Object>> getQuyuSumTop(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime);
	


	public List<DataQualityCollectionEntity> getQuyuDataCollectionList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "target") Integer target);
	
	public List<DataQualityCollectionEntity> getDataJbCollectionList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime);
	


	public List<Map<String, Object>> deptQuRateList(@Param(value = "startTime") String startTime,
			@Param(value = "endTime") String endTime, @Param(value = "order") String order);
	

	/**
	 *
	 * @Function 获取表IDS
	 * @FileName DataQualityDao.java
	 * @MethodName getTableIds
	 * @param resourceId
	 *            资源表名
	 * @Date 2018年7月16日 下午5:25:09
	 * @Author Min DongXv
	 *
	 */
	public List<Integer> getTableIds(@Param(value = "resourceIds") List<String> resourceIds);


	public int selectQulityReportNum();
	
	
	public List<Map<String, Object>> getTrateCount(@Param(value = "startTime") String startTim, @Param(value = "endTime") String endTime,
			@Param(value = "resourceId") String resourceId,@Param(value = "target") String target);


	public void setFileName(@Param(value = "id")Long id, @Param(value = "fileName")String fileName);

}
